---
title: OnBaseKeywordSync overview
summary: Purpose, invocation, scheduling, and capabilities for the OnBaseKeywordSync console application.
status: draft
owner: Documents
last_reviewed: 2026-09-17
---

# OnBaseKeywordSync overview

OnBaseKeywordSync reads unprocessed OnBase keyword-sync work items from the Imaging API, pushes the corresponding keyword updates into OnBase over a SOAP (WCF) keyword-update service, and marks each processed. There is no other stated purpose in the repository.

## Purpose
- Retrieve unprocessed keyword-sync work items from the Imaging API (`ImageKeywordSyncs` endpoints) and clear any records whose `person_id` no longer exists before processing.
- Translate each record's prior/new keyword values (including three Y/N flag keywords) and send the resulting keyword update to OnBase's `HylandOutBoundContract` SOAP service, either synchronously or asynchronously depending on `OnBaseKeywordSync.onbaseasync`.
- Mark every processed record complete in the Imaging API, including records that were evaluated but not sent to OnBase.

## Invocation

```
OnBaseKeywordSync.exe
```

The application declares no command-line arguments; all behavior is driven by environment configuration. Any tokens supplied on the command line are parsed and then discarded because no property on `ArgumentContainer` matches them*.

`README.md` states the application is "run from UC4" and "Called from many different UC workflows" — an external scheduler, not an operator or upstream pipeline job defined in this repository.

## Scheduling

| Attribute | Value |
| --- | --- |
| Frequency | Not determined from source |
| Scheduler | UC4 (per `README.md`); no job definition exists in this repository |
| Expected runtime | Not determined from source |
| Upstream dependencies | Not determined from source |

`Pipelines/build.yml` and `Pipelines/release.yml` both declare `trigger: none` and contain only build/deploy stages; no scheduler definition file exists in this repository.

## Command-line arguments

Arguments are **named**, not positional. The application declares no arguments at all. The full contract is on the [Arguments](arguments.md) page.

| Argument | Type | Required | Default | Purpose |
| --- | --- | --- | --- | --- |
| *(none declared)* | — | — | — | The application takes no input; all behavior is driven by environment configuration. |

## Capability summary

| Capability | Owning component | Description |
| --- | --- | --- |
| Clear invalid person keyword syncs | `OnBaseKeywordSyncRunner.ProcessInvalidKeywordSyncs` / `ImagingApiClient` | Clears keyword syncs whose `person_id` does not exist before the batch runs |
| Retrieve unprocessed keyword syncs | `ImagingApiClient.GetUnprocessedKeywordSyncs` | Retrieves and orders unprocessed `ImageKeywordSync` records from the Imaging API |
| Decide and send keyword updates | `KeywordUpdater`, `OnBaseKeywordSyncClient` | Evaluates each record's document counts and value changes, then sends qualifying updates to OnBase over SOAP |
| Translate keyword values | `KeywordHelper` | Converts three flag keywords to `Y`/`N` and passes all others through unchanged |
| Mark records processed | `OnBaseKeywordSyncRunner.Updater_OnBaseKeywordUpdateSetComplete` / `ImagingApiClient` | Marks every evaluated record processed in the Imaging API, whether or not an update was sent |

## Related documentation
- [Application index](index.md)
- [Architecture](architecture.md)
- [Run lifecycle](run-lifecycle.md)
- [Arguments](arguments.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

## Sources
- `README.md`
- `OnBaseKeywordSync/Program.cs`
- `OnBaseKeywordSync/OnBaseKeywordSyncRunner.cs`
- `OnBaseKeywordSync/Services/ImagingApiClient.cs`
- `OnBaseKeywordSync/Services/KeywordUpdater.cs`
- `OnBaseKeywordSync/Services/OnBaseKeywordSyncClient.cs`
- `OnBaseKeywordSync/Services/KeywordHelper.cs`
- `Pipelines/build.yml`
- `Pipelines/release.yml`
